iT邦幫忙

2021 iThome 鐵人賽

DAY 16
0

前言


DevOps 是一種理念,目的是讓開發到發佈的速度、穩定性都能提升。
而 CI/CD 是實踐 DevOps 的其中一種實踐方式,CI/CD 分成 持續整合持續交付持續部署

遇到了什麼問題


如果我們的產品已經步上正軌,我們會遇到很多重複的事情:

  • 平常開發到某個時間點早就已經改壞了,但因為沒有一直跑測試,所以不知道。
  • 手動執行所有單元測試、 UI 測試,可能要等個半天。
  • 結果上面那步凌晨跑完了,早上發現測試失敗,可是今天要請假,別人難幫忙。
  • 要自己編譯 aab / apk 並傳給要出版上架的人。
  • 上架後要歸檔,以後才找得到。
  • keystore 不是大家都有,每次都是同一個人編出 sign 過的 apk 也太可憐。
  • 需要緊急出版,我的電腦根本沒那麼快能走完測試並編譯許多版本出來。
  • 出版前要走過很多檢查流程,但每次做還是很累。
  • 啊,出版前一刻發現忘記改版號、改文案,全部再來一次。
  • 最近公司 API 不穩定,但又不可能一直重新整理。

這樣的話,我們出版可能就要花個一兩天,如果我們一兩週出一次版,那是很高的時間佔比,所以就需要 CI/CD 了。

CI 可以做到什麼


先用白話文說,CI 就是一個機器人,跟它說什麼情況下幫忙做什麼事,它還會在事情完成後通知我們。

CI 可以在自己的電腦、自家的 server、雲端服務上架設(不同 CI 能支援),也有線上的服務,而他就是台電腦,所以可以寫任何程式在裡面呼叫執行,只是透過該 CI 軟體的 GUI 或語言來設定。

我們可以選擇很多種觸發方式,例如:

  • git repo 中的某 branch 有 commit push 上來的時候。
  • 定時、週期觸發。
  • API 呼叫。
  • 某專案編譯完。
  • 手動。
  • 還有很多,各家 CI 支援不同。

舉例一般的情境:
我們讓 CI 偵測某 branch 被 push 後,執行測試,待測試完畢且通過後,編譯出我們要的檔案,並且不論成功或失敗,都發消息至通訊軟體中提示開發人員。

CI 軟體


有很多,只列出一部分:
GitHub Actions
GitLab CI/CD
Jenkins
CircleCI

另外,CI 可能有 plugin 可以幫我們省下不少時間,像是 GitHub Actions 的部分就有上萬種插件,Jenkins 的部分也有很多,還可以繪製圖表。


上一篇
Day 15:Git
下一篇
Day 17:上架 Google Play
系列文
30 天從麻瓜變 Android 工程師30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言